package ru.averta.notes.web.test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import ru.averta.notes.dao.CoolMarkDao;
import ru.averta.notes.domain.CoolMark;
import ru.averta.notes.domain.Site;
import ru.averta.notes.domain.User;
import ru.averta.notes.exceptions.UserAlreadyExistsException;
import ru.averta.notes.service.SiteService;
import ru.averta.notes.service.UrlService;
import ru.averta.notes.service.UserService;
import ru.averta.notes.service.security.SecurityService;
import ru.averta.notes.service.tag.TagManager;

@Controller
public class InstallController {

    Logger logger = LoggerFactory.getLogger(InstallController.class);
    @Autowired
    SiteService siteService;
    @Autowired
    UserService userService;
    @Autowired
    SecurityService security;
    @Autowired
    TagManager tagManager;
    @Autowired
    UrlService urlService;
    @Autowired
    CoolMarkDao markDao;

    @RequestMapping(method = RequestMethod.GET, value = "/install")
    public String install() throws UserAlreadyExistsException {
        Site site = null;
        User user = null;

        logger.info("Регистрируем пользователя test1@mail.ru (пароль test1)");

        user = new User();
        user.setEnabled(true);
        user.setMail("test1@mail.ru");
        user.setPassword("test1");
        userService.createUser(user);

        logger.info("Зарегистрировали пользователя " + user);

        security.loginAs("test1@mail.ru", "test1");

        for (int i = 0; i < 25; i++) {
            site = new Site();
            site.setUser(user);
            site.setTitle("Заметка_" + i);
            siteService.create(site);

            if(i==10) tagManager.addTag(site, "life");

        }
        logger.info("Для пользователя 1 зарегистрировали заметку " + site);

        site = new Site();
        site.setUrl(urlService.findOrCreateUrl("http://mail.ru"));
        site.setUser(user);
        site.setTitle("Вторая заметка пользователя " + user);
        siteService.create(site);
        tagManager.addTag(site, "job");
        tagManager.addTag(site, "life");
        tagManager.addTag(site, "social");
        tagManager.addTag(site, "service");

        logger.info("Для пользователя 1 зарегистрировали заметку " + site);

        site = new Site();
        site.setUrl(urlService.findOrCreateUrl("http://google.com"));
        site.setUser(user);
        site.setTitle("Google - поисковая система");
        siteService.create(site);
        tagManager.addTag(site, "search");
        tagManager.addTag(site, "social");
        tagManager.addTag(site, "социальная_сеть");

        CoolMark mark = new CoolMark(site, 600, 450, "Go to Google Russia", "Эта ссылка позволяет переключиться на русский Google");
        markDao.save(mark);

        mark = new CoolMark(site, 50, 150, "I'm feeling lucky", null);
        markDao.save(mark);

        logger.info("Регистрируем пользователя test2@mail.ru (пароль test2)");

        user = new User();
        user.setEnabled(true);
        user.setMail("test2@mail.ru");
        user.setPassword("test2");
        userService.createUser(user);

        logger.info("Зарегистрировали пользователя " + user);

        security.loginAs("test2@mail.ru", "test2");

        site = new Site();
        site.setUser(user);
        site.setTitle("Заметка 3!");
        siteService.create(site);
        tagManager.addTag(site, "just simple");
        tagManager.addTag(site, "life");

        site = new Site();
        site.setUser(user);
        site.setTitle("Еще какая-то заметка");
        siteService.create(site);

        logger.info("Для пользователя 3 зарегистрировали заметку " + site);

        return "login";
    }

}
